# ==================================================================================
# 存储服务器元数据描述符生成器
# ==================================================================================
# 功能说明：
#   生成存储服务器的元数据描述符文件
#   包含通用逻辑和数据库协议的完整描述信息
# 
# 输入：
#   ${COMMON_LOGIC_DESC_XML}  - 通用逻辑协议文件
#   ${PROTOCOL_DB_LOGIC_XML}  - 数据库协议文件
# 
# 输出：
#   StoreServer.proto.ds  - 存储服务器描述符文件
# 
# 用途：
#   1. 数据库代理服务器的协议反射
#   2. 自动生成SQL表结构
#   3. ORM映射配置
#   4. 数据迁移工具
#   5. 数据库管理工具的元数据查询
# 
# 说明：
#   --include_imports 参数会将所有依赖的proto文件信息都包含进描述符
#   这样工具可以完整地理解数据结构的嵌套关系
# ==================================================================================

include ./define.makefile
.PHONY:all

all:${STORE_SERVER_META_DESCRIPTOR}

# ----------------------------------
# 生成存储服务器描述符文件
# ----------------------------------
${STORE_SERVER_META_DESCRIPTOR}:${COMMON_LOGIC_DESC_XML} ${PROTOCOL_DB_LOGIC_XML}
	@echo "  创建目标目录..."
	mkdir -p ${PROTOCGEN_FILE_PATH}
	mkdir -p ${GAME_SQL_PATH}
	@echo "  生成存储服务器元数据描述符..."
	${PROTOC} $^ -I${THIRD_PARTY_INC_PATH} -I${NANOPB_PLUGIN_PROTO} -I${PROTOCOL_PATH} -I${COMMON_LOGIC_META_PATH} -I${RESDB_META_PATH} -I${PROTOCOL_DB_META_PATH} --cpp_out=${PROTOCGEN_FILE_PATH}\
			--include_imports --descriptor_set_out=${STORE_SERVER_META_DESCRIPTOR}
	@echo "  复制描述符文件到SQL目录..."
	${FILE_COPY_EXE} --work="filecopy" --src="${STORE_SERVER_META_DESCRIPTOR} " --dst=${GAME_SQL_PATH}/